package utiles;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Serializador {
	
	/**
	 * Convierte un objeto a un array de byte.
	 * @param mensaje Un objeto a serializar.
	 * @return	Un array de byte.
	 * @throws IOException
	 */
	public static byte[] leerObjeto(IMensaje mensaje) throws IOException{
		ByteArrayOutputStream bs= new ByteArrayOutputStream();
		ObjectOutputStream os = new ObjectOutputStream (bs);
		os.writeObject(mensaje);
		os.close();
		return bs.toByteArray();
	}
	
	/**
	 * Convierte un array de byte a objeto, siempre que sea posible.
	 * @param bytes Array de byte de entrada
	 * @return	Un objeto
	 * @throws IOException
	 * @throws ClassNotFoundException	La clase del objeto serializado no se puede encontrar.
	 */
	public static IMensaje escribirObjeto(byte[] bytes)  throws IOException, ClassNotFoundException{
		ByteArrayInputStream bs= new ByteArrayInputStream(bytes);
		ObjectInputStream is = new ObjectInputStream(bs);
		IMensaje unObjetoSerializable = (IMensaje) is.readObject();
		is.close();
		return unObjetoSerializable;
	}

}
